﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Interfaces;
using Model;


namespace simpel_Server
{
    public sealed class Responder
    {
        //her bruger vi singleton-mønstret. klassen er nød til at have hukommelse (auktion Col), men vi skal kun have én instans.
        private static Responder instance = null;
        static readonly object _lock = new object();
        private AuktionCol _auktionCol =null;

        static Responder()
        {
        }

        public static Responder Instance
        {
            get {
                lock (_lock)
                {
                    if (instance==null)
                    {
                        instance = new Responder();
                    }
                    return instance;
                }
            }
        }

        public AuktionCol AuktionCol
        {
            private get { return _auktionCol; }

            set
            {
                if (_auktionCol == null)
                {
                    _auktionCol = value;
                }
                
            }
        }


        internal String Vis()
        {
            lock (_lock)
            {
                return AuktionCol.VisAuktioner();
            }


        }

        internal IAuktion Byd(string command)
        {
            lock (_lock)
            {
                List<string> args = new List<string>();
                args.AddRange(command.Trim().Split(' '));
                int auktNr = 0;
                double pris = 0;
                if (!(int.TryParse(args[0].Trim(), out auktNr) && double.TryParse(args[1].Trim(), out pris)))
                {
                    throw new Exception("konverteringsfejl (pris & auktnr) Responder.cs");
                }
                return AuktionCol.Byd(auktNr, pris);
            }

        }

        internal IAuktion Tilmeld(string kommando )
        {
            string tekst = kommando.Trim();
            int tal;
            int.TryParse(tekst, out tal);
            return AuktionCol.FindAuktion(tal);
        }
    }
}
